/**
全排列STL的方法原型
template<class Iterator>
  bool next_permutation (Iterator first, Iterator last);

template<class Iterator, class Compare>
  bool next_permutation (Iterator first, Iterator last, Compare comp);
**/
#include <iostream>
#include<algorithm>
using namespace std;

int main() {

        string x ="";
        cin>>x;
        /**
        核心代码
        nexnext_permutation获取的是下一个全排列，pre_permutation获取到的是上一个全排列（按照字典序）
            给到的参数是要进行排列的起始位置
            返回参数值是bool类型，如果为真，则说明还有下一个排列，
            并且直接在原位置进行排列，所以在循环体中直接输出x即可
        **/
        do{
            cout<<x<<endl;
        }
        while(next_permutation(x.begin(), x.end()));

    return 0;
    }
 
